{#分页宏#}
{% macro render_page(pagination, endpoint, fragment='') %}
<ul class="pagination">
    <li{% if not pagination.has_prev %} class="disabled"{% endif %}>
        <a href="{% if pagination.has_prev %}{{ url_for(endpoint, page=pagination.prev_num, **kwargs) }}{{ fragment }}{% else %}#{% endif %}">
            &laquo;
        </a>
    </li>
    {% for p in pagination.iter_pages() %}
        {% if p %}
            {% if p == pagination.page %}
            <li class="active">
                <a href="{{ url_for(endpoint, page = p, **kwargs) }}{{ fragment }}">{{ p }}</a>
            </li>
            {% else %}
            <li>
                <a href="{{ url_for(endpoint, page = p, **kwargs) }}{{ fragment }}">{{ p }}</a>
            </li>
            {% endif %}
        {% else %}
        <li class="disabled"><a href="#">&hellip;</a></li>
        {% endif %}
    {% endfor %}
    <li{% if not pagination.has_next %} class="disabled"{% endif %}>
        <a href="{% if pagination.has_next %}{{ url_for(endpoint, page=pagination.next_num, **kwargs) }}{{ fragment }}{% else %}#{% endif %}">
            &raquo;
        </a>
    </li>
</ul>
{% endmacro %}

{##}
{#分页属性说明#}
{#has_next：如果有下一页，返回TRUE#}
{#has_prev：如果有上一页，返回TRUE#}
{#items = None ：当前页的记录#}
{##}
{#iter_pages(left_edge=2, left_current=2, right_current=5, right_edge=2)#}
{#一个迭代器，返回一个在分页导航中显示的页数列表。这个列表的最左边显示left_#}
{#edge 页，当前页的左边显示 left_current 页，当前页的右边显示 right_current 页，#}
{#最右边显示 right_edge 页。例如，在一个 100 页的列表中，当前页为第 50 页，使用#}
{#默认配置，这个方法会返回以下页数：1、2、None、48、49、50、51、52、53、54、#}
{#55、None、99、100。None 表示页数之间的间隔#}
{##}
{#next(error_out=False)下一页的分页对象#}
{#next_num 下一页#}
{#page = None：当前页#}
{#pages：总页数#}
{#per_page = None 每页显示的记录数 .#}
{#prev(error_out=False)上一页的分页对象#}
{#prev_num上一页#}
{##}
{#query = None 分页的源查询,也就是SQL语句 #}
{##}
{#total = None总记录数#}